﻿// 开发者:micropu
// 公司:佛山远钧智慧科技有限公司

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Admin.NET.Application.Dto;

/// <summary>
/// 捕获数据类
/// </summary>
public class CaptureData
{
    /// <summary>
    /// 命令
    /// </summary>
    public string Cmd { get; set; }

    /// <summary>
    /// 序号
    /// </summary>
    public int SequenceNo { get; set; }

    /// <summary>
    /// 设备编号
    /// </summary>
    public string DeviceNo { get; set; }

    /// <summary>
    /// 设备序列号
    /// </summary>
    public string DeviceSn { get; set; }

    /// <summary>
    /// 点位编号
    /// </summary>
    public string AddrNo { get; set; }

    /// <summary>
    /// 点位名称
    /// </summary>
    public string AddrName { get; set; }

    /// <summary>
    /// 抓拍时间
    /// </summary>
    public DateTime CapTime { get; set; }

    /// <summary>
    /// 实时抓拍标志
    /// </summary>
    public int IsRealtime { get; set; }

    /// <summary>
    /// 不通行原因
    /// </summary>
    public int MatchFailedReson { get; set; }

    /// <summary>
    /// 比对结果
    /// </summary>
    public int MatchResult { get; set; }

    /// <summary>
    /// 匹配人员信息
    /// </summary>
    public Match Match { get; set; }

    /// <summary>
    /// 全景图像标志（是否包含全景图像）
    /// </summary>
    public bool OverallPicFlag { get; set; }

    /// <summary>
    /// 全景图像（全景图像标志为true）
    /// </summary>
    public Picture OverallPic { get; set; }

    /// <summary>
    /// 特写图像标志（是否包含特写图像）
    /// </summary>
    public bool CloseupPicFlag { get; set; }

    /// <summary>
    /// 特写图像（特写图像标志为true）
    /// </summary>
    public Picture CloseupPic { get; set; }

    /// <summary>
    /// 视频标志（是否包含视频）
    /// </summary>
    public bool VideoFlag { get; set; }

    /// <summary>
    /// 视频（视频标志为true）
    /// </summary>
    public Video Video { get; set; }

    /// <summary>
    /// 人员属性信息
    /// </summary>
    public Person Person { get; set; }

    /// <summary>
    /// 身份证信息
    /// </summary>
    public IdCard IdCard { get; set; }

    /// <summary>
    /// 二维码数据，检测到二维码时有此字段，否则无此字段
    /// </summary>
    public QrCode QrCode { get; set; }

    /// <summary>
    /// 位置信息，只有外接了gps设备才有这个信息
    /// </summary>
    public Gps Gps { get; set; }
}

/// <summary>
/// 匹配人员信息类
/// </summary>
public class Match
{
    /// <summary>
    /// 是否加密
    /// </summary>
    public bool IsEncryption { get; set; }

    /// <summary>
    /// 人员ID
    /// </summary>
    public string PersonId { get; set; }

    /// <summary>
    /// 人员姓名
    /// </summary>
    public string PersonName { get; set; }

    /// <summary>
    /// 32bit韦根协议门禁卡号
    /// </summary>
    public int WgCardId { get; set; }

    /// <summary>
    /// 64bit韦根协议门禁卡号
    /// </summary>
    public ulong LongCardId { get; set; }

    /// <summary>
    /// 人员角色（0：陌生人 1：白名单 2：黑名单）
    /// </summary>
    public int PersonRole { get; set; }

    /// <summary>
    /// 注册图像（模板图片）格式
    /// </summary>
    public string Format { get; set; }

    /// <summary>
    /// 注册图像（模板图片）数据（二进制数据对应base64）
    /// </summary>
    public string Image { get; set; }

    /// <summary>
    /// 人员注册来源
    /// </summary>
    public string Origin { get; set; }

    /// <summary>
    /// 人员名单有效属性
    /// </summary>
    public string PersonAttr { get; set; }

    /// <summary>
    /// 用户自定义文本内容，可用于相机TTS播放、LCD显示
    /// </summary>
    public string CustomerText { get; set; }

    /// <summary>
    /// 比对成功类型
    /// </summary>
    public List<string> MatchType { get; set; }
}

/// <summary>
/// 图像类
/// </summary>
public class Picture
{
    /// <summary>
    /// 图像格式
    /// </summary>
    public string Format { get; set; }

    /// <summary>
    /// 图像数据（二进制数据对应base64）
    /// </summary>
    public string Data { get; set; }

    /// <summary>
    /// 人脸位置位于全景图X坐标
    /// </summary>
    public int FaceX { get; set; }

    /// <summary>
    /// 人脸位置位于全景图Y坐标
    /// </summary>
    public int FaceY { get; set; }

    /// <summary>
    /// 人脸在全景图中宽度
    /// </summary>
    public int FaceWidth { get; set; }

    /// <summary>
    /// 人脸在全景图中高度
    /// </summary>
    public int FaceHeight { get; set; }
}

/// <summary>
/// 视频类
/// </summary>
public class Video
{
    /// <summary>
    /// 视频起始时间
    /// </summary>
    public DateTime StartTime { get; set; }

    /// <summary>
    /// 视频结束时间（秒）
    /// </summary>
    public DateTime EndTime { get; set; }

    /// <summary>
    /// 视频格式(avi/mp4)
    /// </summary>
    public string Format { get; set; }

    /// <summary>
    /// 视频数据（二进制数据对应base64）
    /// </summary>
    public string Data { get; set; }
}

/// <summary>
/// 人员属性信息类
/// </summary>
public class Person
{
    /// <summary>
    /// 性别（male表示男，female表示女,空字符串表示无此信息）
    /// </summary>
    public string Sex { get; set; }

    /// <summary>
    /// 年龄（0表示无此信息）
    /// </summary>
    public int Age { get; set; }

    /// <summary>
    /// 是否佩戴安全帽
    /// </summary>
    public string Hat { get; set; }

    /// <summary>
    /// 体温
    /// </summary>
    public double Temperatur { get; set; }

    /// <summary>
    /// 是否佩戴口罩
    /// </summary>
    public bool HasMask { get; set; }

    /// <summary>
    /// 人像质量（0~100）
    /// </summary>
    public int FaceQuality { get; set; }

    /// <summary>
    /// 扭转角度（头部旋转平面与图片不处于同一平面，取值范围-90~90）
    /// </summary>
    public int TurnAngle { get; set; }

    /// <summary>
    /// 平面旋转角度（头部旋转平面与图像处于同一平面，取值范围-90~90）
    /// </summary>
    public int RotateAngle { get; set; }

    /// <summary>
    /// 32bit韦根协议门禁卡号
    /// </summary>
    public int WgCardId { get; set; }

    /// <summary>
    /// 64bit韦根协议门禁卡号
    /// </summary>
    public ulong LongCardId { get; set; }
}

/// <summary>
/// 身份证信息类
/// </summary>
public class IdCard
{
    /// <summary>
    /// 编号
    /// </summary>
    public string Number { get; set; }

    /// <summary>
    /// 姓名
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// 出生日期
    /// </summary>
    public string Birthday { get; set; }

    /// <summary>
    /// 性别（male：男 female：女）
    /// </summary>
    public string Sex { get; set; }

    /// <summary>
    /// 民族
    /// </summary>
    public string National { get; set; }

    /// <summary>
    /// 住址
    /// </summary>
    public string ResidenceAddress { get; set; }

    /// <summary>
    /// 签发机关
    /// </summary>
    public string OrganIssue { get; set; }

    /// <summary>
    /// 有效期起始时间
    /// </summary>
    public string ValidDateStart { get; set; }

    /// <summary>
    /// 有效期截止时间
    /// </summary>
    public string ValidDateEnd { get; set; }
}

/// <summary>
/// 二维码类
/// </summary>
public class QrCode
{
    /// <summary>
    /// 二维码类型
    /// </summary>
    public string QrType { get; set; }

    /// <summary>
    /// 二维码数据
    /// </summary>
    public string QrData { get; set; }
}

/// <summary>
/// 位置信息类
/// </summary>
public class Gps
{
    /// <summary>
    /// 经度
    /// </summary>
    public string N { get; set; }

    /// <summary>
    /// 纬度
    /// </summary>
    public string E { get; set; }

    /// <summary>
    /// 参考卫星数量
    /// </summary>
    public int Strength { get; set; }
}
